package com.health.system.process.util;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

public class DataToExcel {
	/**
	 * @Title: ToExcel
	 * @Description: TODO 导出excel表格
	 * @Param: @param rowDatas 每一条记录，就是总的记录， List<List<Object>> 第一个是列名，后面的才是记录，
	 * @Param: @param outputType 导出的种类 藕塘putType -1代表导出到本地，1代表网页上导出，下载
	 * @Param: @param path 导出的路径，如果是导出到本地
	 * @Param: @param fileName 导出的文件名
	 * @Param: @param response 用于下载
	 * @Param: @return true|false
	 * @Return: boolean 
	 * @Throws
	 */
	public static boolean ToExcel(List<List<Object>>rowDatas, String path, String fileName) {
		@SuppressWarnings("resource")
		HSSFWorkbook wb = new HSSFWorkbook();//定义一个excel文件
		HSSFSheet sheet = wb.createSheet();//创建第一页
		HSSFCellStyle style = wb.createCellStyle();//创建样式风格
		style.setAlignment(HorizontalAlignment.CENTER);//为样式设置值，这里是居中
		HSSFRow row;
		HSSFCell cell;
		for(int i = 0; i < rowDatas.size(); i++) {
			row = sheet.createRow(i);
			for(int j = 0; j < rowDatas.get(i).size(); j++) {
				cell = row.createCell(j);//创建单元格
				cell.setCellStyle(style);//单元格应用样式
				Object o = rowDatas.get(i).get(j);
				//转换为文本格式，这样在导出文件中展示完全，可以自己尝试
				if(o instanceof Integer || o instanceof Double || o instanceof Float)
					cell.setCellValue(Double.parseDouble(""+o));//这里转换为文本格式
				else {
					cell.setCellValue(""+o);//这里转换为文本格式
				}
			}
		}
		try {
			FileOutputStream fout = new FileOutputStream(path+"/"+fileName);
			wb.write(fout);
		}catch(Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static void main(String args[]) {

	}
}